//package com.ruoyi.web.controller.equ;
//
//import org.springframework.http.HttpStatus;
//import org.springframework.http.ResponseEntity;
//import org.springframework.web.bind.annotation.*;
//import org.springframework.web.multipart.MultipartFile;
//
//import javax.imageio.ImageIO;
//import java.awt.*;
//import java.awt.image.BufferedImage;
//import java.io.ByteArrayOutputStream;
//import java.net.URI;
//import java.net.http.HttpClient;
//import java.net.http.HttpRequest;
//import java.net.http.HttpResponse;
//import java.util.Base64;
//
//@RestController
//@RequestMapping("/equ/ai1")
//public class EquAIController {
//    private static final String API_KEY = "sk-ae142eee797b448a8c1f7b3e2b275900";
//    private static final String URL = "https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis";
//
//    private static final int MIN_SIZE = 384;
//    private static final int MAX_SIZE = 5000;
//
//    /**
//     * 提交图片处理任务 - 添加图片尺寸处理
//     */
//    @PostMapping(value = "/submit", consumes = "multipart/form-data")
//    public ResponseEntity<String> submitTask(
//            @RequestParam("prompt") String prompt,
//            @RequestParam("image") MultipartFile image) {
//        try {
//            // 验证文件是否为空
//            if (image.isEmpty()) {
//                return ResponseEntity.badRequest()
//                        .body("{\"code\":400,\"error\":\"文件不能为空\"}");
//            }
//
//            // 验证文件类型
//            String contentType = image.getContentType();
//            if (contentType == null || !contentType.startsWith("image/")) {
//                return ResponseEntity.badRequest()
//                        .body("{\"code\":400,\"error\":\"只支持图片文件\"}");
//            }
//
//            // 处理图片尺寸
//            byte[] imageBytes;
//            String fileType = getImageType(image);
//
//            try {
//                imageBytes = processImageSize(image, fileType);
//            } catch (Exception e) {
//                // 如果图片处理失败，使用原始图片
//                imageBytes = image.getBytes();
//            }
//
//            // 将处理后的图片转换为Base64
//            String base64Image = Base64.getEncoder().encodeToString(imageBytes);
//
//            // 构造JSON请求体
//            String jsonInput = String.format(
//                    "{\n" +
//                            "    \"model\": \"wan2.5-i2i-preview\",\n" +
//                            "    \"input\": {\n" +
//                            "        \"prompt\": \"%s\",\n" +
//                            "        \"images\": [\n" +
//                            "            \"data:image/%s;base64,%s\"\n" +
//                            "        ]\n" +
//                            "    },\n" +
//                            "    \"parameters\": {\n" +
//                            "        \"n\": 1\n" +
//                            "    }\n" +
//                            "}",
//                    prompt.replace("\"", "\\\""),
//                    fileType,
//                    base64Image
//            );
//
//            // 创建HttpClient实例
//            HttpClient client = HttpClient.newHttpClient();
//
//            // 创建POST请求
//            HttpRequest request = HttpRequest.newBuilder()
//                    .uri(URI.create(URL))
//                    .header("Content-Type", "application/json")
//                    .header("Authorization", "Bearer " + API_KEY)
//                    .header("X-DashScope-Async", "enable")
//                    .POST(HttpRequest.BodyPublishers.ofString(jsonInput))
//                    .build();
//
//            // 发送请求并获取响应
//            HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
//
//            // 返回响应结果
//            String responseBody = response.body();
//            return ResponseEntity.status(response.statusCode()).body(responseBody);
//
//        } catch (Exception e) {
//            e.printStackTrace();
//            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
//                    .body("{\"code\":500,\"error\":\"" + e.getMessage() + "\"}");
//        }
//    }
//
//    /**
//     * 处理图片尺寸，确保符合AI模型要求
//     */
//    private byte[] processImageSize(MultipartFile image, String fileType) throws Exception {
//        BufferedImage originalImage = ImageIO.read(image.getInputStream());
//
//        if (originalImage == null) {
//            throw new Exception("无法读取图片");
//        }
//
//        int originalWidth = originalImage.getWidth();
//        int originalHeight = originalImage.getHeight();
//
//        System.out.println("原始图片尺寸: " + originalWidth + "x" + originalHeight);
//
//        // 检查图片尺寸是否符合要求
//        if (originalWidth >= MIN_SIZE && originalWidth <= MAX_SIZE &&
//                originalHeight >= MIN_SIZE && originalHeight <= MAX_SIZE) {
//            // 尺寸符合要求，直接返回原图
//            return image.getBytes();
//        }
//
//        // 计算调整后的尺寸
//        int newWidth, newHeight;
//
//        if (originalWidth < MIN_SIZE || originalHeight < MIN_SIZE) {
//            // 图片太小，需要放大
//            double scale;
//            if (originalWidth < originalHeight) {
//                scale = (double) MIN_SIZE / originalWidth;
//            } else {
//                scale = (double) MIN_SIZE / originalHeight;
//            }
//
//            newWidth = (int) (originalWidth * scale);
//            newHeight = (int) (originalHeight * scale);
//
//            // 确保不超过最大尺寸
//            if (newWidth > MAX_SIZE) {
//                newWidth = MAX_SIZE;
//                newHeight = (int) (originalHeight * ((double) MAX_SIZE / originalWidth));
//            }
//            if (newHeight > MAX_SIZE) {
//                newHeight = MAX_SIZE;
//                newWidth = (int) (originalWidth * ((double) MAX_SIZE / originalHeight));
//            }
//        } else {
//            // 图片太大，需要缩小
//            double scale;
//            if (originalWidth > originalHeight) {
//                scale = (double) MAX_SIZE / originalWidth;
//            } else {
//                scale = (double) MAX_SIZE / originalHeight;
//            }
//
//            newWidth = (int) (originalWidth * scale);
//            newHeight = (int) (originalHeight * scale);
//
//            // 确保不小于最小尺寸
//            if (newWidth < MIN_SIZE) {
//                newWidth = MIN_SIZE;
//                newHeight = (int) (originalHeight * ((double) MIN_SIZE / originalWidth));
//            }
//            if (newHeight < MIN_SIZE) {
//                newHeight = MIN_SIZE;
//                newWidth = (int) (originalWidth * ((double) MIN_SIZE / originalHeight));
//            }
//        }
//
//        System.out.println("调整后图片尺寸: " + newWidth + "x" + newHeight);
//
//        // 创建调整后的图片
//        BufferedImage resizedImage = new BufferedImage(newWidth, newHeight, originalImage.getType());
//        Graphics2D g = resizedImage.createGraphics();
//
//        // 设置渲染质量
//        g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
//        g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
//        g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
//
//        g.drawImage(originalImage, 0, 0, newWidth, newHeight, null);
//        g.dispose();
//
//        // 将调整后的图片转换为字节数组
//        ByteArrayOutputStream baos = new ByteArrayOutputStream();
//        ImageIO.write(resizedImage, fileType, baos);
//
//        return baos.toByteArray();
//    }
//
//    /**
//     * 查询任务状态
//     */
//    @GetMapping("/query/{taskId}")
//    public ResponseEntity<String> queryTaskStatus(@PathVariable("taskId") String taskId) {
//        try {
//            String url = "https://dashscope.aliyuncs.com/api/v1/tasks/" + taskId;
//
//            HttpClient client = HttpClient.newHttpClient();
//            HttpRequest request = HttpRequest.newBuilder()
//                    .uri(URI.create(url))
//                    .header("Authorization", "Bearer " + API_KEY)
//                    .GET()
//                    .build();
//
//            HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
//            return ResponseEntity.status(response.statusCode()).body(response.body());
//
//        } catch (Exception e) {
//            e.printStackTrace();
//            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
//                    .body("{\"code\":500,\"error\":\"" + e.getMessage() + "\"}");
//        }
//    }
//
//    /**
//     * 获取图片类型
//     */
//    private String getImageType(MultipartFile image) {
//        String originalFilename = image.getOriginalFilename();
//        String contentType = image.getContentType();
//
//        // 优先使用Content-Type判断
//        if (contentType != null) {
//            if (contentType.equals("image/jpeg")) return "jpeg";
//            if (contentType.equals("image/jpg")) return "jpg";
//            if (contentType.equals("image/png")) return "png";
//            if (contentType.equals("image/gif")) return "gif";
//        }
//
//        // 备用：使用文件名判断
//        if (originalFilename != null && originalFilename.contains(".")) {
//            String extension = originalFilename.substring(originalFilename.lastIndexOf(".") + 1).toLowerCase();
//            if (extension.equals("jpg") || extension.equals("jpeg")) return "jpeg";
//            if (extension.equals("png")) return "png";
//            if (extension.equals("gif")) return "gif";
//        }
//
//        return "png"; // 默认返回png
//    }
//}
